import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel
from PyQt5.QtGui import QPainter, QPen, QColor
from PyQt5.QtCore import Qt


class Demo(QWidget):
    distance_from_center = 0

    def __init__(self):
        super().__init__()
        self.initUI()
        self.setMouseTracking(True)     # 打开鼠标追踪，鼠标放在显示器上就自动，关闭的话需要左键点击

    def initUI(self):
        self.setGeometry(350, 350, 1000, 500)
        self.setWindowTitle('SignalAndSlot4')
        
        self.label = QLabel(self)        # 新建一个标签对象
        self.label.resize(500, 40)       # 重设大小
        self.show()
        self.pos = None
        
        
    def mouseMoveEvent(self, event):    # 重定义鼠标移动事件
        distance_from_center = round(((event.x() - 500)**2 + (event.y() - 250)**2)**0.5)    # 计算鼠标到中心点距离
        self.label.setText('坐标: ( x: %d ,y: %d )' % (event.x(), event.y()) + " 离中心点距离: " + str(distance_from_center))       
        self.pos = event.pos()      # 记录鼠标位置
        self.update()       # 实时更新
        
    def paintEvent(self, event):
        if self.pos:
            q = QPainter(self)      # 建立一个绘图对象
            q.drawLine(500, 250, self.pos.x(), self.pos.y())    # 绘制从中心线到目前鼠标点的线
        

if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = Demo()
    sys.exit(app.exec_())